package com.librelato.persistencia;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.librelato.bean.CidadeBean;
import com.librelato.bean.TransportadoraBean;
import com.librelato.persistencia.config.SQLConfiguracao;
import com.librelato.persistencia.enums.EnumCondicao;
import com.librelato.persistencia.interfaces.ITransportadoraDao;

public class TransportadoraDao<P extends TransportadoraBean> extends
		DaoGenerico<P> implements ITransportadoraDao<P> {

	@Override
	public String procuraPorParam(String tabela, String campo, String valor,
			EnumCondicao condicao) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public P salvar(P p) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void excluir(P p) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void editar(P p) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void preSalvar(P p) {
		// TODO Auto-generated method stub

	}

	@SuppressWarnings("unchecked")
	@Override
	public List<P> buscaTransportadoras(Map<String, String> param)
			throws Exception {

		List<TransportadoraBean> transportadoras = new ArrayList<TransportadoraBean>();
		TransportadoraBean transportadora = null;

		try {

			conn = GerenciadorConexao.getConexao();
			query = SQLConfiguracao.getInstance().getValor(
					"localiza_transportadora");
			int psIndex = 1;
			if (param.get("CODIGO") != null) {
				query += " AND A4_COD LIKE ?";
			}
			if (param.get("NOME") != null) {
				query += " AND A4_NOME LIKE ?";
			}
			query += " ORDER BY A4_NOME";
			ps = conn.prepareStatement(query);
			if (param.get("CODIGO") != null) {
				ps.setString(psIndex++, param.get("CODIGO").trim()
						.toUpperCase()
						+ "%%");
			}
			if (param.get("NOME") != null) {
				ps.setString(psIndex++, "%%"
						+ param.get("NOME").trim().toUpperCase() + "%%");
			}
			rs = ps.executeQuery();
			while (rs.next()) {
				transportadora = new TransportadoraBean();
				transportadora.setCodigo(rs.getString("A4_COD"));
				transportadora.setNome(rs.getString("A4_NOME"));
				transportadora.setCidade(new CidadeBean(rs.getString("A4_MUN").trim(),
						rs.getString("A4_EST").trim()));
				transportadoras.add(transportadora);
			}

		} catch (Exception e) {
			throw e;
		}

		return (List<P>) transportadoras;
	}

	public TransportadoraBean buscaTransportadoras(String codigo)
			throws Exception {
		TransportadoraBean transportadora = null;
		try {
			conn = GerenciadorConexao.getConexao();
			query = SQLConfiguracao.getInstance().getValor(
					"localiza_transportadora");
			query += " AND A4_COD = ?";
			query += " ORDER BY A4_NOME";
			ps = conn.prepareStatement(query);
			ps.setString(1, codigo);
			rs = ps.executeQuery();
			while (rs.next()) {
				transportadora = new TransportadoraBean();
				transportadora.setCodigo(rs.getString("A4_COD"));
				transportadora.setNome(rs.getString("A4_NOME"));
				transportadora.setNome(rs.getString("A4_NOME"));
				transportadora.setCidade(new CidadeBean(rs.getString("A4_MUN").trim(),
						rs.getString("A4_EST").trim()));
			}

		} catch (Exception e) {
			throw e;
		}
		return transportadora;
	}

}
